/*
 * @Date: 2025-01-07 10:58:25
 * @Author: LiSong
 * @LastEditors: LiSong
 * @LastEditTime: 2025-01-15 14:56:20
 * @Description: 
 */

import { yhsFormCodeFull } from './form-conf'

// 默认数据
export const baseInfo = {
  // 表单编码
  code: '',
  // 表单名称
  name: '',
  // 0-未启用 1-已启用
  status: 0,
  // 表单备注
  remark: '',
  // 唯一ID
  formId: '',
  // 表单类型
  formType: '',
  // 表单的种类 1-表单 2-主页
  category: '1',
  // 排序
  orderNum: 1,
  // 提交请求地址
  submitURL: '',
  // 表单类型名称
  formTypeName: '',
  // 校验规则
  validateContent: ''
}

/**
 * 项目一户式的配置类
 */
export class FormYhs {
  /**
   * 构造函数
   * 
   * @param {String} code 编码
   * @param {String} name 名称
   * @param {String} type 类型 1 一般项目, 2 专项项目
   */
  constructor(code, name, type='2') {
    this.type = code
    this.name = name
    this.formCode = yhsFormCodeFull[code]
    this.formType = 'yhs'
    this.bondTypeCode = type
  }

  static get SP() {
    return new FormYhs('SP', '专项项目')
  }
  static get GE() {
    return new FormYhs('GE', '一般项目', '1')
  }
  static get ST() {
    return new FormYhs('ST', '备选项目')
  }
  static get BG() {
    return new FormYhs('BG', '变更项目')
  }
  static get AT() {
    return new FormYhs('AT', '会所')
  }
  static get FD() {
    return new FormYhs('FD', '律所')
  }
  static get EXP() {
    return new FormYhs('EXP', '专家评分')
  }
  static get TEST() {
    return new FormYhs('TEST', '测试一户式')
  }
}

/**
 * 表单类型类
 */
export class FormType {
  constructor (value, desc) {
    this.desc = desc
    this.value = value
  }

  static get YHS () {
    return new FormType('yhs', '一户式')
  }
  static get ADD () {
    return new FormType('add', '新增')
  }
  static get EDIT () {
    return new FormType('edit', '修改')
  }
  static get VIEW () {
    return new FormType('view', '查看')
  }
  static get ATTY () {
    return new FormType('atty', '律所')
  }
  static get ACCT () {
    return new FormType('acct', '会所')
  }
  static get STANDBY () {
    return new FormType('standby', '备选项目')
  }
  static get FINANCE () {
    return new FormType('finance', '财评报告')
  }

  /**
   * 比对是否相同
   * 
   * @param {Object|String} item 需要比对的数据
   * @returns {Boolean} true-相同 false-不相同
   */
  equals (item) {
    if (item instanceof FormType) {
      return item.value === this.value
    } else {
      return item === this.value
    }
  }

}
